package conf

import (
	"net/http"
	"time"
)

const (
	_retryInterval   = 1 * time.Second
	_defaultConfPath = "/data/config/"
	_defaultConfApi  = "%s:%s/v1/kv/%s?index=%s"
)

var conf config

type Service struct {
	Conf    config
	httpCli *http.Client
}

type config struct {
	Host        string
	Port        string
	Env         string
	ConfPath    string
	WatchPrefix string
}

func New() (s *Service) {
	s = &Service{
		Conf:    conf,
		httpCli: &http.Client{},
	}
	return s
}

//// watchConf 查看是否更新配置
//func (s *Service) watchConf() (err error) {
//	for {
//		time.Sleep(_retryInterval)
//		// http long polling
//		var req *http.Request
//		var resp *http.Response
//		var index int64
//		var url = s.makeUrl(_defaultConfApi, index)
//		if req, err = http.NewRequest(http.MethodGet, url, strings.NewReader("")); err != nil {
//			err = pkgerrors.Wrap(err, "http.NewRequest err")
//			return
//		}
//
//		if resp, err = s.httpCli.Do(req); err != nil {
//			err = pkgerrors.Wrap(err, fmt.Sprintf("request url \"%s\" err", url))
//			return
//		}
//		defer resp.Body.Close()
//		// 解析body，拿到header，获取到内容后更新本地文件
//		resp.Header.Get("")
//		//if ver, err = c.checkVersion(c.ver); err != nil {
//		//	log.Error("c.checkVersion(%d) error(%v)", c.ver, err)
//		//	continue
//		//} else if ver == c.ver {
//		//	continue
//		//}
//		//if err = c.download(ver); err != nil {
//		//	log.Error("c.download() error(%s)", err)
//		//	continue
//		//}
//	}
//}
//
//func (s *Service) makeUrl(api string, index int64) (query string) {
//	// host/v1/kv/data/test?index=index
//	return fmt.Sprintf(api, s.Conf.Host, s.Conf.Port, s.Conf.WatchPrefix, strconv.FormatInt(index, 10))
//}
